package com.hp.mvc;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("user")
public class UserController {

//    @Autowired
//    private UserService userService；

    //方式1.通过参数名获得参数值
    // 可以使用Model保存数据，返回给前台
    // 可以使用HTTPSession保存数据
    @PostMapping("login1")
    public String login1(String username, String password, Model model, HttpSession session){
        System.out.println(username+"---"+password);
        if("zhangsan".equals(username) && "123".equals(password)){
            session.setAttribute("username",username);
            //直接写页面的url，直接返回页面
//            return "success";
            //使用重定向，跳转到success的方法
            return "redirect:/mvc/success";
        }
        //保存数据
        model.addAttribute("msg","账号或密码错误");
//        return "login";
        //使用请求转发，跳转到login的方法
        return "forward:/mvc/login";
    }

    //方式2. 通过@RequestParam配置参数  @RequestParam(value = "表单的name",required = 是否必须,defaultValue=默认值)
    @PostMapping("login2")
    public String login2(@RequestParam("username") String uname,
                        @RequestParam("password") String pwd,
                        @RequestParam(value = "code",required = false,defaultValue = "no code") Integer code){
        System.out.println(uname+"---"+pwd+"----"+code);
        if("zhangsan".equals(uname) && "123".equals(pwd)){
            return "success";
        }
        return "login";
    }

    //方式3 通过对象获得参数，对象属性要和表单name相同
    @PostMapping("login3")
    public String login3(User user) {
        System.out.println(user.getUsername() + "---" + user.getPassword());
        if ("zhangsan".equals(user.getUsername()) && "123".equals(user.getPassword())) {
            return "success";
        }
        return "login";
    }

    //方式4 在路径中传递参数
    @GetMapping("login4/{uname}/{pwd}")
    public String login4(@PathVariable("uname") String username,@PathVariable("pwd") String password){
        System.out.println(username + "---" + password);
        if ("zhangsan".equals(username) && "123".equals(password)) {
            return "success";
        }
        return "login";
    }

    //方式5 通过Map传递参数
    @PostMapping("login5")
    public String login5(UserMapVO userMapVO){
        Object username = userMapVO.getUser().get("username");
        Object password = userMapVO.getUser().get("password");
        System.out.println(username + "--" + password);
        if ("zhangsan".equals(username) && "123".equals(password)) {
            return "success";
        }
        return "login";
    }

    //方式6 通过List传递参数
    @PostMapping("login6")
    public String login6(UserListVO userListVO){
        Object username = userListVO.getUser().get(0);
        Object password = userListVO.getUser().get(1);
        System.out.println(username + "--" + password);
        if ("zhangsan".equals(username) && "123".equals(password)) {
            return "success";
        }
        return "login";
    }
}
